﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using SoftHotel.Models;
using System.Data.SqlClient;
using System.Web.Mvc;
using System.Data;

namespace SoftHotel.Models
{
    public class DocCompraDAO
    {
        public List<DocCompraModel> documentos = new List<DocCompraModel>() { };
        public List<DocCompraModel> dbuscadis = new List<DocCompraModel>() { };
        public List<DocumentoCompra> dbuscadis2 = new List<DocumentoCompra>() { };
        private Conexion conexionBD = new Conexion();

        public int buscarEstado(string estado)
        {
            int i = 0;
            if (estado == "Aprobado") i = 1;
            if (estado == "Rechazado") i = 2;
            if (estado == "Por Aprobar") i = 3;
            if (estado == "Anulado") i = 4;
            return i;
        }
        public List<DocCompraModel> buscar(DocCompraModel producto)
        {
            string consulta = "";
            string datos = "";
            int x;
            DocCompraDAO consultor = new DocCompraDAO();
            //conexionBD.AbrirConexion();
            consulta = "SELECT idOrdenCompra, idProveedor, montoTotal, estado FROM OrdenCompra WHERE 1=1 ";
            if (producto.idDocCompra != null)
            {
                consulta += " and idOrdenCompra LIKE '%" + producto.idDocCompra + "%'";
            }
            if (producto.idProveedor != null)
            {
                consulta += " and idProveedor LIKE '%" + producto.idProveedor + "%'";
            }
            if (producto.montoTotal != null)
            {
                consulta += " and montoTotal = " + producto.montoTotal;
            }
            if (producto.estado != null)
            {
                x = consultor.buscarEstado(producto.estado);
                consulta += " and estado = " + x;
            }
            consulta += " order by 1 desc ";
            SqlDataReader dr = conexionBD.EjecutarReader(consulta);
            dbuscadis.Clear();
            while (dr != null && dr.Read())
            {
                DocCompraModel busquedax = new DocCompraModel();

                busquedax.idDocCompra = dr["idOrdenCompra"].ToString();

                datos = consultor.obtenerProveedor(Int32.Parse(dr["idProveedor"].ToString()));
                busquedax.idProveedor = datos;
                busquedax.montoTotal = dr["montoTotal"].ToString();
                datos = consultor.obtenerDatos(Int32.Parse(dr["estado"].ToString()));
                busquedax.estado = datos;
                dbuscadis.Add(busquedax);
            }
            return dbuscadis;
        }
        public List<DocumentoCompra> buscar2(DocCompraModel producto)
        {
            string consulta = "";
            string datos = "";
            int x;
            DocCompraDAO consultor = new DocCompraDAO();
            //conexionBD.AbrirConexion();
            consulta = "SELECT idDocumentoCompra,idOrdenCompra, idSede, fechaEmision, fechaPago,moneda,tipo,formaPago,estado,montoTotal FROM DocumentoCompra WHERE 1=1 ";
            if (producto.idDocCompra != null)
            {
                consulta += " and idDocumentoCompra LIKE '%" + producto.idDocCompra + "%'";
            }
      
            if (producto.formapago != null)
            {
                consulta += " and tipo = (select idParametro from Parametro where tipo = 'TIPO_DC' and valor = '" + producto.formapago + "'";
            }
            if (producto.divisa != null)
            {
                consulta += " and estado =  (select idParametro from Parametro where tipo = 'MONEDA_OC' and valor = '"+producto.divisa+"'";
            }
            consulta += " order by 1 desc ";
            SqlDataReader dr = conexionBD.EjecutarReader(consulta);
            dbuscadis.Clear();
            List<DocumentoCompra> listDC = new List<DocumentoCompra>() { };
            while (dr != null && dr.Read())
            {
                DocumentoCompra busquedax = new DocumentoCompra();
                busquedax.idDocCompra= dr["idDocumentoCompra"].ToString();
                busquedax.idOC= dr["idOrdenCompra"].ToString();
                busquedax.idSede = dr["idSede"].ToString();
                busquedax.fechaEmision = dr["fechaEmision"].ToString();
                busquedax.fechaPago = dr["fechaPago"].ToString();
                busquedax.moneda = dr["moneda"].ToString();
                busquedax.tipo = dr["tipo"].ToString();
                busquedax.formapago= dr["formaPago"].ToString();
                busquedax.estado = dr["estado"].ToString();
                busquedax.montoTotal = dr["montoTotal"].ToString();
                listDC.Add(busquedax);
            }
            return listDC;
        }
        public DocumentoCompra buscar3(string id)
        {
            string consulta = "";
            string datos = "";
            int x;
            DocCompraDAO consultor = new DocCompraDAO();
            //conexionBD.AbrirConexion();
            consulta = "SELECT idDocumentoCompra,idOrdenCompra, idSede, fechaEmision, fechaPago,moneda,tipo,formaPago,estado,montoTotal FROM DocumentoCompra WHERE idDocumentoCompra = '" + id+ "'";
            SqlDataReader dr = conexionBD.EjecutarReader(consulta);
            DocumentoCompra busquedax = new DocumentoCompra();
            while (dr != null && dr.Read())
            {
                
                busquedax.idDocCompra = dr["idDocumentoCompra"].ToString();
                busquedax.idOC = dr["idOrdenCompra"].ToString();
                busquedax.idSede = dr["idSede"].ToString();
                busquedax.fechaEmision = dr["fechaEmision"].ToString();
                busquedax.fechaPago = dr["fechaPago"].ToString();
                busquedax.moneda = dr["moneda"].ToString();
                busquedax.tipo = dr["tipo"].ToString();
                busquedax.formapago = dr["formaPago"].ToString();
                busquedax.estado = dr["estado"].ToString();
                busquedax.montoTotal = dr["montoTotal"].ToString();
            }
            return busquedax;
        }
        public string obtenerProveedor(int numero)
        {
            string num = "";
            string consulta2 = "SELECT razonSocial FROM Proveedor WHERE idProveedor =" + numero;
            SqlDataReader dr5 = conexionBD.EjecutarReader(consulta2);
            dr5.Read();
            string s = dr5[0].ToString();
            num = s;
            return num;
        }
        public string obtenerDatos(int x)
        {
            string datos = "";
            //conexionBD.AbrirConexion();//mare xurrevicky
            string query = "SELECT valor FROM Parametro WHERE idParametro =" + x;
            SqlDataReader dr3 = conexionBD.EjecutarReader(query);
            if (dr3 != null && dr3.Read())
            {
                datos = dr3["valor"].ToString();
            }
            dr3.Close();

            return datos;
        }

        //conexionBD.CerrarConexion();            


    }
}
